package composants
{
	import flash.display.Sprite;
	import flash.display.Loader;
	import flash.net.URLRequest;
	import flash.events.Event;
	import flash.display.BitmapData;
	import flash.display.Bitmap;
	import mx.core.UIComponent;
	import flash.events.MouseEvent;
	import mx.controls.Alert;
	import flash.display.Graphics;

	/**
	 *
	 * Classe qui permet de charger les icones des ouvertures (portes, fenetres et oeuvres)
	 */
	public class BitmapLoader extends UIComponent
	{
		/**
		 *
		 * Chemin vers une image
		 */
		private var nom:String;
		/**
		 *
		 * Conteneur d'éléments graphiques
		 */
		private var rectSelect:UIComponent;
		/**
		 *
		 * Instance d'un objet Loader, charger un élément
		 */
		private var mLoader:Loader=new Loader();
		/**
		 *
		 * Instance d'un objet Bitmap, création d'une image à partir du constructeur
		 */
		public var mImage:Bitmap;
		/**
		 *
		 * Instance d'un objet Bitmap, stockera les données d'une image construite par mImage
		 * @see #onComplete()
		 */
		public var mBitmap:BitmapData;


		/**
		 * Constructeur
		 * @param pPath chemin vers une image
		 */
		public function BitmapLoader(pPath:String)
		{

			//rectangle de selection
			mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
			mLoader.load(new URLRequest(pPath));
			addChild(mLoader);

			rectSelect=new UIComponent();
			addChild(rectSelect);

			addEventListener(MouseEvent.MOUSE_MOVE, mouve, false, 1);
			addEventListener(MouseEvent.CLICK, stop, false, 1);
			nom=pPath;
		}

		/**
		 * Cette fonction est effectuée si le chargement a été effectué avec succès
		 * @param pEvt évènement
		 */
		public function onComplete(pEvt:Event):void
		{
			mImage=Bitmap(mLoader.content);
			mBitmap=mImage.bitmapData;
			this.setActualSize(mBitmap.width, mBitmap.height);
			graphics.beginBitmapFill(mBitmap);
			graphics.endFill();
			this.dispatchEvent(pEvt);
		}

		/**
		 * Fonction réalisée au déplacement de la souris
		 * @param event évènement souris
		 */
		public function mouve(event:MouseEvent):void
		{
			if (nom == "icons/porte.png")
			{
				event.stopImmediatePropagation();
			}

		}

		/**
		 * Fonction qui efface le conteneur d'éléments graphiques
		 */
		public function deselectionne():void
		{
			rectSelect.graphics.clear();
		}

		/**
		 * Fonction qui dessine le conteneur d'éléments graphiques
		 */
		public function selectionne():void
		{

			rectSelect.graphics.clear();
			rectSelect.graphics.beginFill(0xE9FAA3, 0.2);
			rectSelect.graphics.lineStyle(1, 0xF0EC4D);
			if (nom == 'icons/table.png')
				rectSelect.graphics.drawRect(0, 0, 107, 54);
			if (nom == 'icons/chaise.png')
				rectSelect.graphics.drawRect(0, 0, 38, 54);
			rectSelect.graphics.endFill();
		}

		/**
		 * Methode qui dessine une bordure rouge autour de l'icône
		 */
		public function malPlace():void
		{

			rectSelect.graphics.clear();
			rectSelect.graphics.beginFill(0x220000, 0.2);
			rectSelect.graphics.lineStyle(4, 0xFF0000);
			if (nom == 'icons/table.png')
				rectSelect.graphics.drawRect(0, 0, 107, 56);
			if (nom == 'icons/chaise.png')
				rectSelect.graphics.drawRect(0, 0, 38, 54);
			rectSelect.graphics.endFill();
		}

		/**
		 * Fonction d'arrêt
		 * @private
		 * @param event évènement souris
		 */
		public function stop(event:MouseEvent):void
		{
			//if (nom=="icons/tableGhost.png" || nom=="icons/chaiseGhost.png")
			//{
			//event.stopImmediatePropagation();
			//	}
			//else
			//{
		/*	Alert.show("wesh");
			if ((GridRoom)(((Meuble)(this.parent)).parent).getMode()=='table' || (GridRoom)(((Meuble)(this.parent)).parent).getMode()=='chaise' )
			{
				(GridRoom)(((Meuble)(this.parent)).parent).clicked(event);
			}
			*/
			//}
		}

	}
}